/**
 * 项目名称:
 * 简化规则：
 * 1、参数类型 可以省略不写
 * 2、如果一个参数，参数类型可以省略，同时（）也可以省略
 * 3、如果Lambda表达式的方法体代码只有一行代码，可以省略{}不写，同时要省略分号
 * 4、如果Lambda表达式的方法体代码只有一行代码，可以省略{}不写。此时，如果这行代码是return语句，必须省略不写，同时;也必须省略不写
 *
 * @Author: 夏国倩
 * @Date: 2023/9/25 14:15
 * @Copyright
 */
package inner.lambda;

import java.util.Arrays;
import java.util.Comparator;

public class TestDemo {
    public static void main(String[] args) {
        InterfaceA a1=()->{
            System.out.println("接口A中的方法");
        };
        //简化 如果代码块中包含一条语句，Lambda表达式允许省略代码块的花括号
        InterfaceA a2=()-> System.out.println("接口A中的方法");
        a1.show();
        a2.show();

        InterfaceB b1=(int ia)->{
            System.out.println("接口B中的方法"+ia);
        };
        //简化
        InterfaceB b2=(ia)->{
            System.out.println("接口B中的方法"+ia);
        };
        InterfaceB b3=(ia)-> System.out.println("接口B中的方法"+ia);
        InterfaceA b4=()-> System.out.println("接口B中的方法");

        b1.showB(10);
        b2.showB(20);

        InterfaceC c1 = ( ia,ib)->{
            System.out.println("接口c中的方法："+ia+"和"+ib);
        };

        InterfaceC c2 = (ia,ib)-> System.out.println("接口c中的方法："+ia+"和"+ib);
        c1.showC("1",2);
        c1.showC("3",4);
        c1.showC("5",6);

        Integer[] a={10,15,20,50,34};
        Arrays.sort(a, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1-o2;
            }
        });
        //简写
        Arrays.sort(a,((o1, o2) -> o1-o2));
    }
}
